package com.xjh.basestudy.designmode.behaviorMode.behaviorMode11_Interpreter;

/**
 * @Author XuJianHua
 * @Date 2022/10/6 23:25
 * @Description 循环表达式
 * 循环表达式Repetition在第6行的构造方法中接收入参并初始化了循环次数loopCount与循环体子表达式序列loopBodySequence，
 * 接着在第11行的解释方法interpret()中对loopBodySequence的解释方法进行了loopCount次的循环调用。
 * 注意，此处并不关心loopBodySequence中还包含哪些子表达式，循环表达式负责的是迭代操作。
 * 此时读者可能对这个循环体表达式产生了一些疑惑，它到底是一个什么样的表达式类？

 */
public class Repetition implements Expression {

    private int loopCount;// 循环次数
    private Expression loopBodySequence;// 循环体内的子表达式序列

    public Repetition(Expression loopBodySequence, int loopCount) {
        this.loopBodySequence = loopBodySequence;
        this.loopCount = loopCount;
    }

    public void interpret() {
        while (loopCount > 0) {
            loopBodySequence.interpret();
            loopCount--;
        }
    }

}